var badfile = { ".exe": "", ".bat": "", ".cmd": "", ".sh": "", ".msi": "", ".js": "", "py": "", ".pyc": "" }

function alert(level, info) {
    // .alert-success, .alert-warning, .alert-danger
    // .fa-thumbs-up, .fa-exclamation-triangle, fa-thumbs-down
    var that = $("#alert");
    that.removeClass("alert-success");
    that.removeClass("alert-warning");
    that.removeClass("alert-danger");
    that.children("i").removeClass("fa-thumbs-up");
    that.children("i").removeClass("fa-exclamation-triangle");
    that.children("i").removeClass("fa-thumbs-down");
    switch (level) {
        case 0:
            that.addClass("alert-success");
            that.children("i").addClass("fa-thumbs-up");
            that.children("strong").text("成功!");
            break;
        case 1:
            that.addClass("alert-warning");
            that.children("i").addClass("fa-exclamation-triangle");
            that.children("strong").text("警告!");
            break;
        case 2:
            that.addClass("alert-danger");
            that.children("i").addClass("fa-thumbs-down");
            that.children("strong").text("失败!");
            break;
        default:
            that.addClass("alert-success");
            that.children("i").addClass("fa-thumbs-up");
            that.children("strong").text("成功!");
            break;
    }
    that.children("span").text(info);
    that.show(1000, function () {
        setTimeout(function () {
            that.hide();
        }, 3000);
    });
}

$(document).ready(function () {
    // 选择文件
    // $("#gfile").on("change", function (e) {
    //     var that = $(this)
    //     var fileMsg = e.currentTarget.files;
    //     if (!fileMsg) { return }
    //     $("#preview").html("");
    //     $.each(fileMsg, function (idx) {
    //         var fileName = fileMsg[0].name;
    //         var fileType = fileMsg[idx].type;
    //         var type = (fileName.substr(fileName.lastIndexOf("."))).toLowerCase();
    //         if (type in badfile) {
    //             alert(2, "不被支持的文件格式!");
    //             that.val('');
    //             return false;
    //         }
    //         $("#preview").append('<li class="list-group-item">' + fileMsg[idx].name + '; ' + fileMsg[idx].type + '; ' + fileMsg[idx].size + 'byte</li>')
    //         var suffix = fileMsg[idx].name.substring(fileMsg[idx].name.lastIndexOf("."));
    //         $("#key").val($("#key").val() + suffix);
    //     });
    // });

    // ==============================================

    $.ajax({ url: "/file/uptoken", success: (res) => initFileInput(res) })

    let initFileInput = (res) => {

        let token = res.uptoken;

        let putExtra = {
            fname: "",
            // 文件原始文件名，若未指定，则魔法变量中无法使用 fname、ext、suffix
            params: {},
            mimeType: null
            // string指定所传的文件类型
        };

        let config = {
            useCdnDomain: true,
            // 表示是否使用 cdn 加速域名，为布尔值，true 表示使用，默认为 false。
            //disableStatisticsReport: true,
            // 是否禁用日志报告，为布尔值，默认为 false。
            uphost: "up-cn-east-2.qiniup.com",
            // 上传 host，类型为 string[] | string，如果指定一个非空数组或者非空字符串，则仅使用该数据作为上传 host，默认为 []，传入多个 host 时，内部会在重试过程中根据情况自动切换不同的 host。
            //upprotocol: "http",
            // 自定义上传域名协议，值为 https 或者 http，默认为 https。
            // region: qiniu.region.z0, //qiniu.region.z2,
            // 选择上传域名区域；当为 null 或 undefined 时，自动分析上传域名区域，当指定了 uphost 时，此设置项无效。
            retryCount: 3,
            // 上传自动重试次数（整体重试次数，而不是某个分片的重试次数）；默认 3 次（即上传失败后最多重试两次）。
            concurrentRequestLimit: 3,
            // 分片上传的并发请求量，number，默认为3；因为浏览器本身也会限制最大并发量，所以最大并发量与浏览器有关。
            checkByServer: false,
            // 是否开启服务端文件签名校验，为布尔值；
            checkByMD5: false,
            // 是否开启 MD5 校验，为布尔值；
            debugLogLevel: 'INFO',
            // INFO | WARN | ERROR | OFF,允许程序在控制台输出日志，默认为 OFF
        };



        $("#gfile").change(function () {

            let file = this.files[0];
            let key = file.name;
            putExtra.fname = file.name;
            putExtra.mimeType = file.type;

            // 添加上传dom面板
            let subscription;
            // 调用sdk上传接口获得相应的observable，控制上传和暂停
            let observable = qiniu.upload(file = file, key = null, token = token, putExtra, config);
            observable.subscribe({
                next: (response) => {
                    let total = response.total;
                    $(".speed").text("进度：" + total.percent + "% ");
                    console.log(response);
                },
                error: (err) => { },
                complete: (res) => {
                    console.log("完成");
                    console.log(res);
                }
            });
            // observable.subscribe(complete);
        })
    }
});




